package com.sky.handler;

import com.sky.exception.BaseException;
import com.sky.result.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

/**
 * 全局异常处理器，处理项目中抛出的业务异常
 */
@RestControllerAdvice
@Slf4j
public class GlobalExceptionHandler {

    /**
     * 捕获业务异常
     *
     * 该方法用于全局捕获BaseException类型的业务异常，以便统一处理异常信息
     * 它通过日志记录异常信息，并返回给前端错误信息，提高系统的健壮性和用户体验
     *
     * @param ex BaseException类型的异常对象，包含了异常的相关信息
     * @return 返回一个Result对象，其中包含了错误的信息，用于前端展示
     */
    @ExceptionHandler
    public Result exceptionHandler(BaseException ex){
        // 记录异常信息，使用日志的error级别，表明这是一个严重的错误
        log.error("异常信息：{}", ex.getMessage());
        // 返回错误信息给前端，告知用户发生了什么错误
        return Result.error(ex.getMessage());
    }

}
